Database Tutorials Master-Slave Replication কনফিগারেশন গাইড ও নোট

261

Master-Slave Replication হল MySQL-এর একটি ক্ষমতা যা একটি Master সার্ভার থেকে Slave সার্ভারে ডেটা কপি বা সিঙ্ক্রোনাইজ করার জন্য ব্যবহৃত হয়। এটি ডেটা ব্যাকআপ, স্কেলেবিলিটি এবং উচ্চ অ্যাভেইলেবিলিটি নিশ্চিত করতে সহায়ক। Master সার্ভার হল যেখানে সমস্ত লেখার (write) অপারেশন ঘটে, এবং Slave সার্ভারগুলি শুধুমাত্র পড়া (read) অপারেশন সম্পাদন করে।

নিচে Master-Slave Replication সেটআপ করার জন্য ধাপে ধাপে গাইড দেওয়া হলো:


1. Master সার্ভারে কনফিগারেশন

1.1. my.cnf ফাইল এডিট করা

Master সার্ভারের কনফিগারেশন শুরু করতে, প্রথমে MySQL কনফিগারেশন ফাইল (my.cnf বা my.ini) এ কিছু প্যারামিটার যোগ করতে হবে। সাধারণত, এই ফাইলটি /etc/my.cnf বা /etc/mysql/my.cnf অবস্থানে থাকে। এই ফাইলটি খোলার জন্য নিচের কমান্ড ব্যবহার করুন:

sudo nano /etc/my.cnf

কনফিগারেশনে নিচের প্যারামিটারগুলো যোগ করুন বা পরিবর্তন করুন:

[mysqld]
server-id = 1              # Master server ID
log_bin = /var/lib/mysql/mysql-bin   # Enable binary logging
bind-address = 0.0.0.0     # Allow connections from any IP (be cautious in production)
binlog-do-db = your_database_name   # The database to replicate (optional)
  • server-id: এটি প্রতিটি সার্ভারের জন্য ইউনিক হতে হবে। Master সার্ভারের জন্য server-id = 1 রাখা হয়েছে।
  • log_bin: log_bin কে এনেবল করতে হবে, কারণ Replication চলার সময় সমস্ত ট্রানজেকশন binary log-এ লেখা হবে।
  • bind-address: অন্য সার্ভার থেকে কানেকশন করার জন্য এটি 0.0.0.0 রাখতে পারেন (তবে নিরাপত্তার জন্য শুধুমাত্র নির্দিষ্ট IP অ্যাড্রেস দিন)।
  • binlog-do-db: আপনি যদি নির্দিষ্ট একটি ডেটাবেসের রেপ্লিকেশন করতে চান, তবে এই অপশনটি ব্যবহার করতে পারেন। যদি সমস্ত ডেটাবেসের রেপ্লিকেশন করতে চান, তাহলে এই লাইনটি না রাখুন।

1.2. MySQL Restart করা

কনফিগারেশন ফাইলের পরিবর্তন প্রযোজ্য করতে MySQL সার্ভার রিস্টার্ট করুন:

sudo systemctl restart mysqld

1.3. Replication User তৈরি করা

Master সার্ভারে একটি replication user তৈরি করুন, যাতে Slave সার্ভারটি Master সার্ভারের লগ দেখতে পারে।

CREATE USER 'replica_user'@'%' IDENTIFIED BY 'replica_password';
GRANT REPLICATION SLAVE ON *.* TO 'replica_user'@'%';
FLUSH PRIVILEGES;
  • replica_user: Replication এর জন্য ইউজারের নাম।
  • replica_password: ইউজারের পাসওয়ার্ড।

2. Slave সার্ভারে কনফিগারেশন

2.1. my.cnf ফাইল এডিট করা

Slave সার্ভারের কনফিগারেশন ফাইলেও কিছু প্যারামিটার যোগ করতে হবে। /etc/my.cnf অথবা /etc/mysql/my.cnf ফাইলটি খুলুন এবং নিচের কনফিগারেশনটি যোগ করুন:

[mysqld]
server-id = 2              # Slave server ID (must be different from Master)
relay-log = /var/lib/mysql/mysql-relay-bin  # Enable relay logging
log-bin = /var/lib/mysql/mysql-bin   # Enable binary logging (optional)
read-only = 1             # Prevent writes to the slave
  • server-id: এটি Slave সার্ভারের জন্য ইউনিক হতে হবে। এখানে server-id = 2 রাখা হয়েছে।
  • relay-log: Slave সার্ভার যেখান থেকে Master সার্ভারের লগ গ্রহণ করবে, সেই স্থানে relay log ফাইল রাখা হবে।
  • read-only: Slave সার্ভারের read-only মোডে থাকার জন্য এই প্যারামিটারটি সেট করা হয়।

2.2. MySQL Restart করা

Slave সার্ভারে পরিবর্তন কার্যকর করতে MySQL রিস্টার্ট করুন:

sudo systemctl restart mysqld

2.3. Slave সার্ভারে Replication Start করা

Slave সার্ভারে Master সার্ভারের সাথে সংযোগ স্থাপন করতে এবং replication শুরু করতে নিচের কমান্ডগুলো ব্যবহার করুন:

CHANGE MASTER TO
    MASTER_HOST='master_ip_address',    -- Master server IP address
    MASTER_USER='replica_user',         -- Replication user created on Master
    MASTER_PASSWORD='replica_password', -- Replication user's password
    MASTER_LOG_FILE='mysql-bin.000001', -- The binary log file to start replication from (can get this from Master)
    MASTER_LOG_POS=  107;               -- The position of the log file to start replication from (can get this from Master)
  • MASTER_HOST: Master সার্ভারের IP ঠিকানা।
  • MASTER_USER: Master সার্ভারে তৈরি করা replication ইউজারের নাম।
  • MASTER_PASSWORD: Replication ইউজারের পাসওয়ার্ড।
  • MASTER_LOG_FILE: Master সার্ভারের binary log file নাম (এটি Master সার্ভারের SHOW MASTER STATUS থেকে পাওয়া যাবে)।
  • MASTER_LOG_POS: Master সার্ভারের log position (এটি SHOW MASTER STATUS থেকে পাওয়া যাবে)।

2.4. Replication Start করা

Replication শুরু করতে নিচের কমান্ডটি চালান:

START SLAVE;

2.5. Slave সার্ভারের স্ট্যাটাস চেক করা

Replication সফলভাবে চলছে কিনা তা পরীক্ষা করতে:

SHOW SLAVE STATUS\G;

এটি Slave_IO_Running এবং Slave_SQL_Running কলামে Yes দেখালে, Replication সফলভাবে কাজ করছে।


3. Master থেকে Binary Log Status দেখা

Master সার্ভারে চলমান binary logs দেখতে:

SHOW MASTER STATUS;

এটি আপনাকে File এবং Position দেখাবে, যা আপনি Slave সার্ভারে ব্যবহার করবেন।


4. Replication Monitoring

Replication চলছে কিনা, তা নিয়মিত মনিটর করা গুরুত্বপূর্ণ। আপনি Slave সার্ভারে SHOW SLAVE STATUS ব্যবহার করতে পারেন:

SHOW SLAVE STATUS\G;

এটি আপনাকে ডেটাবেসের বর্তমান replication অবস্থা দেখাবে। গুরুত্বপূর্ণ ফিল্ডগুলি হল:

  • Slave_IO_Running: Yes হলে I/O থ্রেডটি ঠিকভাবে কাজ করছে।
  • Slave_SQL_Running: Yes হলে SQL থ্রেডটি ঠিকভাবে কাজ করছে।
  • Last_Error: যদি কোনো সমস্যা ঘটে, তাহলে এখানে তা দেখানো হবে।

সারাংশ

Master-Slave Replication MySQL-এ ডেটার ব্যাকআপ, হাই অ্যাভেইলেবিলিটি এবং স্কেলেবিলিটির জন্য খুবই গুরুত্বপূর্ণ। এটি মূলত Master সার্ভারে লেখা (write) অপারেশন এবং Slave সার্ভারে পড়া (read) অপারেশন সঞ্চালনের জন্য ব্যবহৃত হয়। Master সার্ভারের binary logs Slave সার্ভারে relay logs হিসাবে ব্যবহার করা হয় এবং ডেটা সিঙ্ক্রোনাইজ করা হয়। Replication কনফিগারেশনে server-id, log-bin, relay-log, এবং replica_user তৈরি করার মতো প্যারামিটার সেট করতে হয়। START SLAVE কমান্ডের মাধ্যমে replication শুরু করতে হয় এবং SHOW SLAVE STATUS এর মাধ্যমে পরিস্থিতি পর্যবেক্ষণ করা হয়।

Content added By
Promotion

Are you sure to start over?

Loading...